<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>闭包</title>
<body>
    <script>
        // 闭包就是作用域的特殊情况 01 函数作为返回值被返回，02 函数作为参数被传递
        // 函数作为返回
      /*   function create(){
            let a =100;
            return function(){
                a++;
                console.log(a);
            }
        }
        let fn = create();
        let a = 200;
        fn(); */
        // 闭包：自由变量的查找是在函数定义的地方，向上级作用域查找，而不是在执行的地方
        // 闭包：上一级的局部变量（闭包的自由变量）会被存储在内存中不会被销毁（可能造成内存泄露）
    

        //  函数作为参数传递
        function print(fn){
            let a = 200;
            fn();
        }
        let a = 100;
        function fn(){
            console.log(a);
        }
        print(fn);
        // 
    </script>

</body>
</html>